Resolver dependencias

Descripcion

Cuando intentamos instalar un paquete con npm obtenemos un error de dependencias

npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: dependency@0.0.0
npm ERR! Found: @angular/compiler@13.1.3
npm ERR! node_modules/@angular/compiler
npm ERR!   @angular/compiler@"~13.1.0" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer @angular/compiler@"13.2.3" from @angular/localize@13.2.3
npm ERR! node_modules/@angular/localize
npm ERR!   peer @angular/localize@"^13.0.0" from @ng-bootstrap/ng-bootstrap@12.0.0
npm ERR!   node_modules/@ng-bootstrap/ng-bootstrap
npm ERR!     @ng-bootstrap/ng-bootstrap@"*" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See C:\Users\manuel.bascoy\AppData\Local\npm-cache\eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\manuel.bascoy\AppData\Local\npm-cache\_logs\2022-02-20T18_42_14_337Z-debug-0.log
Solución

La solución mas rápida en estos casos suele ser la de utilizar la opcion --legacy-peer-deps, en este caso la usaríamos tal que así:

> npm install @ng-bootstrap/ng-bootstrap --legacy-peer-deps

Si queremos tambien podemos ir resolviendo las dependencias poco a poco (en caso de que haya varias).

Para esto tenemos que ir mirando cual es exactamente la dependencia que falta.

> npm install @ng-bootstrap/ng-bootstrap

En el mensaje de error se nos dice que el paquete @ng-bootstrap/ng-bootstrap@12.0.0 necesita una version mayor a la 13 del paquete @angular/localize, por lo visto intenta instalar la versión 13.2.3 pero esa versión a su vez tiene una dependencía del paquete @angular/compiler@"13.2.3", nosotros tenemos ese paquete pero en una versión anterior, si miramos el package.json vemos que tenemos la versión ~13.1.0.

Entonces vamos a actualizarl el paquete @angular/compiler con el siguiente comando:

> npm install @angular/compiler@"13.2.3"

El paquete se ha actualizado correctamente, ahora intentemos instalar de nuevo el paquete de @ng-bootstrap/ng-bootstrap, ahora obtenemos el siguiente error:

ERR! Could not resolve dependency:
npm ERR! peer @angular/compiler@"13.1.3" from @angular/compiler-cli@13.1.3
npm ERR! node_modules/@angular/compiler-cli
npm ERR!   dev @angular/compiler-cli@"~13.1.0" from the root project

Obtenemos un error de una dependencía distinta, al instalar el paquete @angular/compiler@"13.1.3" ahora el paquete @angular/compiler-cli@13.1.3 nos dice que necesita la version antigua del paquete @angular/compiler, pero esa versión no nos vale para el paquete @ng-bootstrap/ng-bootstrap, así que vamos a actualizar el paquete a la misma versión que la del compiler:

> npm install @angular/compiler-cli@13.2.3

El paquete se instala correctamente, ahora ya podemos volver a intentar instalar el paquete @ng-bootstrap/ng-bootstrap: > npm install @ng-bootstrap/ng-bootstrap

El paquete se ha instalado correctamente, podríamos haber instalado el paquete localizez de manera manual como paso intermedio, pero al tener ya todas las dependencias resueltas el propio npm lo instala automáticamente.

Tags

NPM | Dependencias